$(function () {

  var currentPage = 1; // 当前页 
  var pageSize = 5; // 每页数据条数 
  // 1-数据动态渲染
  // 1- ajax 去后台 获取二级分类的数据
  // 2- 通过模板引擎把数据渲染到页面中 

  function render () {
    $.ajax({
      type: 'get',
      url: '/category/querySecondCategoryPaging',
      data: {
        page: currentPage,
        pageSize: pageSize
      },
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 渲染
        $('tbody').html(template('tmp', res));
        // 根据总数 生成分页
        setPage(res.total);
      }
    })
  }

  render();


  // 2- 分页
  // 注意点： 分页按钮的个数， 由后台数据库数据的总数决定！  
  // 1- 获取数据库数据的总数， 根据总数推算出页码， 
  // 2- 根据算出的页面 生成分页的按钮 
  // 3- 点击不同的分页按钮，切换到不同的页面   

  // total 数据库数据的总数 
  function setPage (total) {
    $("#paginator").bootstrapPaginator({
      bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
      currentPage: currentPage,//当前页
      totalPages: Math.ceil(total / pageSize),//总页数     
      onPageClicked: function (event, originalEvent, type, page) {
        //为按钮绑定点击事件 page:当前点击的按钮值
        // 1- 改变当前页取值
        currentPage = page;
        // 2- 页面从新渲染
        render();
      }
    });
  }

  // 3- 一级下拉列表填充数据
  // 1- 去后台获取 一级分类的数据
  // 2- 把数据渲染到列表中 
  $.ajax({
    type: 'get',
    url: '/category/queryTopCategoryPaging',
    data: {
      page: 1,
      pageSize: 100 // 获取后台全部的一级分类的数据 
    },
    dataType: 'json',
    success: function (res) {
      console.log(res);
      // 渲染
      $('.cate-one-list').html(template('tmp-one', res));
    }
  })

  // 4- 下拉列表的选中效果 
  // 1- 给a标签绑定点击事件， 被点击后 获取 a标签上文字，赋值给按钮
  // 2- 获取当前被点击a标签id, 添加给隐藏域， 将来传递给后台
  $('.cate-one-list').on('click', 'a', function () {
    // 获取 a标签上文字，赋值给按钮
    $('.cate-title').text($(this).text());
    // 获取当前被点击a标签id, 添加给隐藏域， 将来传递给后台
    $('#categoryId').val($(this).data('id'));
    // 在 下拉列表选中 把下拉列表的校验状态 手动改成成功 ！ 
    $('.add-form').data('bootstrapValidator').updateStatus('categoryId', 'VALID');
  });


  // 5- 图片上传 
  $("#file").fileupload({
    dataType: "json",  // 把后台返回的 数据 以json格式解析解析    
    // done: 类似于ajax的 success 回调函数 
    // e 是事件对象
    //data：图片上传后的对象，通过data.result.picAddr可以获取上传后的图片地址
    done: function (e, data) {
      var url = data.result.picAddr;
      console.log(url);
      // 图片预览 ：把服务器返回的图片地址 赋值给图片的src 
      $('#img').attr('src', url);
      // 把文件服务器返回大图地址，保存到隐藏域中， 用于将来图片的地址添加到数据库
      $('#brandLogo').val(url);
      // 在 图片上传完成后， 把图片校验状态手动改成成功！
      $('.add-form').data('bootstrapValidator').updateStatus('brandLogo', 'VALID');
    }
  });

  // 6- 表单进行非空 校验
  //使用表单校验插件
  $('.add-form').bootstrapValidator({
    //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
    excluded: [':disabled'],

    //2. 指定校验时的图标显示，默认是bootstrap风格
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },

    //3. 指定校验字段
    fields: {
      //校验用户名，对应name表单的name属性
      // 一级分类id
      categoryId: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请选择一级分类'
          }
        }
      },
      // 二级分类名称
      brandName: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请输入二级分类名称'
          }
        }
      },
      // 二级分类logo
      brandLogo: {
        validators: {
          //不能为空
          notEmpty: {
            message: '请上传图片'
          }
        }
      }
    }

  });


  // 7- 手动恢复状态(代码写在上面了)
  // 在 下拉列表选中 把下拉列表的校验状态 手动改成成功 ！ 
  // 在 图片上传完成后， 把图片校验状态手动改成成功！


  // 8-添加二级分类
  // 2-1 用户点击添加按钮，在表单数据合理的情况，向后台发送请求，进行添加  success.form.bv事件 
  // 2-2 在添加完成后，前端 隐藏模态框， 重置表单数据， 重新渲染 
  $('.add-form').on('success.form.bv', function (e) {
    // 阻止表单提交默认行为 
    e.preventDefault();
    // ajax提交
    $.ajax({
      type: 'post',
      url: '/category/addSecondCategory',
      data: $('.add-form').serialize(),
      dataType: 'json',
      success: function (res) {
        console.log(res);
        // 隐藏模态框
        $('.modal-add').modal('hide');
        // 重新渲染
        render();
        // 重置表单数据 resetForm(); 重置表单的数据和样式
        $('.add-form').data('bootstrapValidator').resetForm(true);
        // 手动重置 图片和按钮样式
        $('.cate-title').text('请选择一级分类');
        $('#img').attr('src', 'images/none.png');

      }
    })
  })




})